#!/usr/bin python
# -*- coding: latin-1 -*-
import time, traceback
import serial, os
from dex_linux import DEX 
from nacitani1Wire import Pyowfs
from logovani import autLogger

from nacteniKonfigurace import db_filename, adresarDatabazeAutomatu, semaforNactiDexData, semaforNapeti230V_OK, razitkoCrocoMainZije
from podpurneFunkce import vymazSoubor, vytvorDatabaziFirebird, vytvorRamDisk, nactiObsahSouboru, vytvorSoubor
from tabulky import vytvorTabulky, UdalostiAutomatu
from gpioWinbond import WinbondInputOutput

vytvorDatabaziFirebird(adresarDatabazeAutomatu, db_filename)
vytvorRamDisk()

vytvorTabulky()

UdalostiAutomatu(popisUdalosti= "start telemetrie", periferie = "START")
while not os.path.exists(semaforNapeti230V_OK):
    print "cekame na signal 230V OK"
    time.sleep(1)
    

s = serial.Serial('/dev/ttyS1', 9600, 8, "N", stopbits=1, timeout=2, xonxoff=0)
dex = DEX(seriovyPort = s)
dex.nactiData()
intervalNacitaniDex = 60*60 # jedna hodina, zadani Crocodille

posledniCasNacteniDex = time.time()


while 1:
    try:
        time.sleep(1)
        vytvorSoubor(razitkoCrocoMainZije)
        if os.path.exists(semaforNactiDexData):
            tStampPlusIdentifikace = nactiObsahSouboru(semaforNactiDexData)
            _casoveRazitko, cisloButtonu = tStampPlusIdentifikace.split(";")
            print "casove razitko: %s" % _casoveRazitko
            print "cislo iButtonu: %s" % cisloButtonu
            dex.nactiData(casoveRazitko = _casoveRazitko, button = cisloButtonu)
            vymazSoubor(semaforNactiDexData)
        elif time.time() > posledniCasNacteniDex + intervalNacitaniDex:
            posledniCasNacteniDex = time.time()
            dex.nactiData()        
    except Exception:
        autLogger.critical(traceback.print_exc())
        raise
        
